#ifndef		_Public_HPP
#define		_Public_HPP

#include "predef.h"

int do_thread (FunPoint *p);

// void	SetEState( u32 StateBit, u8 Mode );
void 	GetASCII(u16 Data, u8* Buf);
void	SetpChar(u8* p);
void	NormCopy( u8 *Addr, u8 Length);		//Public.c
void	RevCopy( void *Addr, u8	Length);		//Public.c
void	SetpCharInc(u8 Data);
u32	GetCodeAddr(u32	Code);				//Public.c
u16	Get_Code_Lst(u16 Addr, u16 Code, u8 Bytes, u8 Length);
void	MvData(void *pData, u16	Opt);				//Public.c
//void	MoveDataLst(strMvData	  *pMv);			//Public.c
void	ClrRam(u8* buf, u8 Cnt);			//Public.c
void	ClrpCharRam( u8 Cnt);
void	FillpCharRam( u8 Data, u8 Cnt);
void	SetpCharRam( u8 Cnt);
u16	GetFileSetAddr(u16 Bias);			//Public.c
void	Erase_AllBlock(void);				//Public.c

void
CheckpCharLength (u8 Length);
u32 bkpReadBackupRegister(u8 n );
void RevStr(u8 *s, u8 Lth);
u8      HEX(u8 Data);                                   //GCasm.s
u8      BCD(u8 Data);                                   //GCasm.s
void    FillRam(u8 *Dst, u8 Data, u16   Length);        //GCasm.s
void    CopyRam(u8 *Dst, u8     *Src, u8 Length);       //GCasm.s
void    RevCopyRam( u8* Dst, u8* Src, u8 Length);       //GCasm.s
void    Hex_BCD(s32 Data, u8* Dst);                     //GCasm.s
u32     BCD_Hex(u32 Data);                              //GCasm.s
u16     GetSum(u8       *buf, u16 Cnt);                 //GCasm.s
u8      BCD_Inc(u8 Data);                               //GCasm.s
u32     GetLongByte( u32 Data, u8 N);                   //GCasm.s
u8      Check_Blank( u32 Addr, u16 Length);             //GCasm.s
u8      CheckZero(u8   *buf, u8 Cnt);           //GCasm.s
u8      CheckBCD(u8   *buf,     u8 Cnt);                //GCasm.s
s8      strCmp(uc8 *buf,uc8 *buf2, u8 len);             //GCasm.s

			/*              Public.c                        */
void GetASCII (u16 Data, u8 * Buf);
void SetpChar (u8 * p);
void NormCopy (u8 * Addr, u8 Length);	//Public.c
void RevCopy (void *Addr, u8 Length);	//Public.c
void SetpCharInc (u8 Data);
u32 GetCodeAddr (u32 Code);	//Public.c
u16 Get_Code_Lst (u16 Addr, u16 Code, u8 Bytes, u8 Length);


 

#define	Copy_FlashInfo(Dst, Src, Lth)		WriteSTM8Flash(Dst, Src, Lth)
#define 	lSave( Dst , Src )        WriteSTM8Flash((u8 *)(&Dst), (u8 *)(&Src), sizeof(u32 ))
#define 	iSave( Dst , Src )        WriteSTM8Flash((u8 *)(&Dst), (u8 *)(&Src), sizeof(u16 ))
#define 	cSave( Dst , Src )        WriteSTM8Flash((u8 *)(&Dst), (u8 *)(&Src), sizeof(u8 ))
#define   lSetZero(Dst)      		WriteSTM8Flash((u8 *)(&Dst), zeroP, sizeof(u32 ))
#define   cSetZero(Dst)					WriteSTM8Flash((u8 *)(&Dst), zeroP, sizeof(u8 ))
#define 	lSetCurrTime(Dst)     lSave(Dst , _S_lRTCTime ) 
//#define cWrite_u32( Dst, Src )  WriteSTM8Flash(Dst, Src, 4)
#endif
